类型的判断
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
前面讲到 JavaScript 特性的时候,我们说过,JavaScript 是一个弱类型的语言,但是有时我们需要知道变量在运行时的类型,比如,一个函数的参数预期为另一个函数:
function handleMessage(message, handle){
return handle(message);
}
当调用 handleMessage 的函数传递的 handle 不是一个函数则 JavaScript 引擎会报错, 因此我们有必要在调用之前进行判断:
function handleMessage(message, handle){
if(typeof handle == "function"){
return handle(message);
}else{
throw new Error("the 2nd argument should be a function");
}
}
但是,typeof 并不总是有效的,比如下面这种情况:
var obj = {};
var array = ["one", "two", "three", "four"];
alert(typeof obj);//object
alert(typeof array); //object
运行结果显示,对象 obj 和数组 array 的 typeof 值均为”object”,这样我们就无法准确判断了,这时候,可以通过调用 instanceof 来进行进一步的判断:
alert(obj instanceof Array);//false
alert(array instanceof Array);//true
第一行代码返回 false,第二行则返回 true。因此,我们可以将 typeof 操作符和 instanceof操作符结合起来进行判断。
在线练习
{$ activeFileHint $}